package com.ldcc.report_system.util;

import android.util.Log;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * @author wwg
 * @version JDK 11
 * @description 时间操作类
 * @create 2021-10-15 12:32
 **/
public class ServerDateUtils {
    public final static String TAG = "ServerDateUtils";
    // 服务器时间格式
    public final static SimpleDateFormat serverDataFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.CHINA);

    // 时间格式
    public final static SimpleDateFormat MM_dd = new SimpleDateFormat("MM月dd日", Locale.CHINA);
    public final static SimpleDateFormat hh_mm = new SimpleDateFormat("hh:mm", Locale.CHINA);


    /**
     * @param serverDate 待转化的时间字符串
     * @param dateFormat 格式化模板
     * @return 时间字符串结果
     * @description 通过时间字符串返回对应格式化的时间字符串
     */
    public static String getDateString(String serverDate, SimpleDateFormat dateFormat) {
        return dateFormat.format(formatServerDate(serverDate));
    }

    /**
     * @param serverDate 时间
     * @return 周数
     * @description 通过时间获取当前月份周数
     */
    public static Integer getDateToWeekOfMonth(String serverDate) {
        Date date = formatServerDate(serverDate);
        Calendar cal = Calendar.getInstance();
        //设置周一为一周的第一天
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setTime(date);
        return cal.get(Calendar.WEEK_OF_MONTH);
    }

    /**
     * @param serverDate 服务器时间
     * @return 年份
     * @description 获得年份
     */
    public static Integer getDateYear(String serverDate) {
        Date date = formatServerDate(serverDate);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }

    /**
     * @param serverDate 服务器时间
     * @return 月份
     * @description 获取月份
     */
    public static Integer getDateMonth(String serverDate) {
        Date date = formatServerDate(serverDate);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.MONTH) + 1;
    }

    /**
     * @param serverDate 服务器时间
     * @return 日期
     * @description 获取日期
     */
    public static Integer getDateDay(String serverDate) {
        Date date = formatServerDate(serverDate);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.DAY_OF_MONTH);
    }


    /**
     * @param date 服务器时间字符串
     * @return 时间对象
     * @description 格式化服务器时间为时间对象
     */
    public static Date formatServerDate(String date) {
        try {
            return ServerDateUtils.serverDataFormat.parse(date);
        } catch (ParseException e) {
            Log.e(ServerDateUtils.TAG, "formatServerDate: " + e.getLocalizedMessage());
            return new Date();
        }
    }

}
